--BasePanel类
Object:SubClass("BasePanel")
--成员变量
BasePanel.panelObj=nil --自己
BasePanel.name=nil
BasePanel.controls={} --控件字典 键为控件obj名

function BasePanel:Init()
    if IsNull(self.panelObj) then
        self.panelObj=ABMgr:LoadRes("ui",self.name,typeof(GameObject))
        self.panelObj.transform:SetParent(Canvas,false)
        self.panelObj.transform:SetAsLastSibling()

        local allControls=self.panelObj:GetComponentsInChildren(typeof(U.EventSystems.UIBehaviour))
        for i = 0, allControls.Length-1 do
            local controlName=allControls[i].name
            if string.find(controlName,'btn') ~=nil 
            or string.find(controlName,'img') ~=nil
            or string.find(controlName,'txt') ~=nil 
            or string.find(controlName,'tog') ~=nil
            or string.find(controlName,'sv') ~=nil
            then
                local typeName=allControls[i]:GetType().Name
                --每个控件obj 建一张表 存obj下的全部控件
                if self.controls[controlName] == nil then
                    self.controls[controlName] = {[typeName]=allControls[i]}
                else
                    self.controls[controlName][typeName]=allControls[i]
                end
            end
        end
    end 
end

--根据控件obj名 与控件类型名 得到控件
function BasePanel:GetControl(objName,type)
    if(self.controls[objName]~=nil) then
        local control=self.controls[objName]
        if(control[type]~=nil) then
            return control[type]
        end
    end
    return nil
end

function BasePanel:Show()
    if IsNull(self.panelObj) then
        self:Init()
    else
        self.panelObj:SetActive(true)
    end
end

function BasePanel:Hide()
    self.panelObj:SetActive(false)
end